#include<iostream>
#include<memory>//使用智能指针必须要引入的文件
using namespace std;
template<class T>
class ptr{
    //智能指针实验
    T *_p;
public:
    ptr(T *p):_p(p){}
    ~ptr(){
        //超过类的作用域时自动析构释放内存
        delete _p;
    }
};

void test1(){
    //不使用智能指针管理内存
    double *p=new double(3); //内存使用 16.1  MB
}
void test2(){
    //手动管理内存
    double *p=new double(3);
    delete p;    //内存使用 0.6  MB
}
void test3(){
    //使用智能指针管理
    shared_ptr<double> p(new double);//给其传递了一个新的double地址
    //内存使用 0.6 MB
}
void test4(){
    //使用我们自己的智能指针
    ptr<long> p(new long);//大小也是0.6 MB
}

int main(){
    //智能指针的使用    
    int n=1000000;
    for(int i=0;i<n;i++){
        //新建n次内存
        test4();
    }
    system("pause");
    return 0;
}